In computer-driven processes, such as billing and accounting, individual functions can be performed by computer applications (or simply, “applications”). Examples of functions that can be performed by applications include, but are not limited to, monitoring status of an item, booking items for shipment, monitoring stocks of items, printing status reports, obtaining orders for items, coordinating shipment of items, receiving orders, operating machinery, controlling logistics, and controlling storage systems.
By way of example, production lines typically run according to pre-defined plans, which are controlled by applications. During production line operation, supervisors may detect disturbances, evaluate which applications are needed for production, and assign such applications a higher priority. However, an application can become a bottleneck. That is, an increased workload that may be required from the application can cause the application to stall, or at least cause the process to run slower than usual. The supervisor can assign more system resources to the application manually, thereby enabling the application to run faster and, as a result, to reduce processing backlogs.
Since system resources are limited, the supervisor has to decide which application(s) must do without their current amount of resources (i.e., which application(s) should have to sacrifice at the expense of a high-priority application). This can cause problems in a production process, since the supervisor needs the authority to allocate resources, and also needs in-depth knowledge of all applications that are running.
Examples of system resources that can be allocated and re-allocated include, but are not limited to, central processing unit (CPU) time, storage, and access to data sources such as CD-ROM and DVD drives, printers, scanners, and other peripherals. Resources that are required for different applications can vary. However, applications that are scheduled to run concurrently can also require the same system resources. Thus, when one such application has priority access to a system resource, other such applications may have to wait until system resources are available before running.
If an unpredicted event occurs, a supervisor may have to assign system resources to critical (high-priority) applications and to reduce access to system resources for non-critical applications manually. Since applications can be run on different production sites, different supervisors may need to contact each other, and to agree on a strategy to react to the event. This can be extremely time consuming and error prone. Additionally, responsibilities and access authorities for certain applications need to be checked.